<?php
require_once('3rdparty/nusoap/nusoap.php');
class CDongAPaymentOnline
{	
	public $client; 
	public $client2; 
	public $err; 
	function __construct()
	{
		$this->client = new nusoap_client("https://webservice.dongabank.com.vn:443/testws/WSBean?wsdl",false);//Kết nối với Webservice của Đông Á
		$this->client2 = new nusoap_client("http://bank.vimua.com/dab/Service.asmx?wsdl",true);  //Kết nối với Webservice thông qua servertrung gian
		$this->err = $this->client->getError();
		if ($this->err) 
		{
			echo '<h2>Constructor error</h2><pre>' . $this->err . '</pre>';
			echo '<h2>Debug</h2><pre>' . htmlspecialchars($this->client->getDebug(), ENT_QUOTES) . '</pre>';
			exit();
		}
	} 
	 function error($fault,$result)
	 {	
		if ($fault) {
			echo '<h2>Fault</h2><pre>'; print_r($result); echo '</pre>';
		} else {
			$this->err = $this->client->getError();
			if ($this->err) {
				echo '<h2>Error</h2><pre>' . $this->err . '</pre>';
			} else {
				echo '<h2>Result</h2><pre>'; print_r($result); echo '</pre>';
			}
		}	
		return $result;
	}
	 function get_payment_info($mode,$params)	
	{
		$client=$this->client;
		$client2=$this->client2;
		$message='';
		switch($mode)
		{
			//Thay đổi Password của nhà cung cấp dịch vụ
			case 'changePartnerPassword':				
				$result = $client->call("changePartnerPassword", $params);				
				if($result == 0 )
					$message = "Đổi Password thành công";
				else if ($result == -1)
					$message = "Không đổi được Password";				
			break;
			//Kiểm tra thông tin thẻ đa năng
			case 'checkCard':					
				$result = $client2->call("checkCardC", $params);				
				if($result["checkCardCResult"] == -1)
					$message= "Thẻ đã hết hạn";
				else if($result["checkCardCResult"] == -2)
					$message= "Thẻ không hợp lệ";
				else if($result["checkCardCResult"] == -3)
					$message= "Tài khoản không đủ để thanh toán";
				else if($result["checkCardCResult"] == 0)
					$message= "Thẻ hợp lệ";						
			break;
			//Lấy trạng thái đơn hàng
			case 'checkStatusOrder':				
				$result = $this->client->call("checkStatusOrder", $params);
//				var_dump($result);
		//wrong password would be like this:
		//string(14) "Wrong password" 
		//wrong orderlist would be like this:
		//string(2) "-1" 
			break;
			//Gửi thông tin giao dịch đến WEbservice của Đông Á Bank
			case 'sendOrderInform':				
				$result = $this->client2->call("sendOrderInformC", $params);	
//				$result = $this->client->call("sendOrderInform", $params);	
//				$this->error($client->fault,$result);				
				if($result["sendOrderInformCResult"] ==1)
					$message= "Hóa đơn đã có trên hệ thống";
				else if($result["sendOrderInformCResult"] ==0)
					$message= "Success";
				else if($result["sendOrderInformCResult"] ==-1)
					$message= "Invalid partner";
				else if($result["sendOrderInformCResult"] ==-2)
					$message= "Thẻ không hợp lệ";
				else if($result["sendOrderInformCResult"] ==-3)
					$message= "Qúi khách chưa đăng kí trên hệ thống của Đông Á Bank";
				else if($result["sendOrderInformCResult"] ==-4)
					$message= "Ngày không hợp lệ";
			break;	
			//Lấy thông tin đơn hàng dựa trên số thứ tự	
			case 'getBillingInfo':
		//return result like this: array(6) { [0]=>  string(4) "4910" [1]=>  string(1) "1" [2]=>  string(5) "VIMUA" [3]=>  string(16) "1792010129823190" [4]=>  string(1) "1" [5]=>  string(5) "ORDER" }	
		//if wrong user name or pass word the result would something like this:
		//array(6) { [0]=>  string(14) "Wrong password" [1]=>  NULL [2]=>  NULL [3]=>  NULL [4]=>  NULL [5]=>  NULL } 
		//if out of order, will be error
				$result = $this->client->call("getBillingInfo", $params);		
//				var_dump($result);
//				echo $this->error($fault,$result);
			break;	
			
			//Lấy thông tin đơn hàng dựa trên mã hóa đơn
			case 'getBillingInfoByOFI':				
				$result = $this->client->call("getBillingInfoByOFI", $params);		
//				var_dump($result);
//				echo $this->error($fault,$result);
		//return value would be something like this:
		//array(14) { [0]=>  string(12) "Le Trong Tan" [1]=>  string(15) "DAB TEST CARD 2" [2]=>  string(6) "121230" [3]=>  string(9) "Xuan Thuy" [4]=>  string(16) "1792010129823190" [5]=>  string(8) "MUA HANG" [6]=>  string(10) "25-09-2008" [7]=>  string(10) "20-09-2008" [8]=>  string(10) "01-02-2011" [9]=>  string(4) "4922" [10]=>  string(5) "VIMUA" [11]=>  string(10) "0912433342" [12]=>  string(5) "ORDER" [13]=>  string(9) "1400000.0" } 
		//wrong password would be like this:
		//array(14) { [0]=>  string(14) "Wrong password" [1]=>  NULL [2]=>  NULL [3]=>  NULL [4]=>  NULL [5]=>  NULL [6]=>  NULL [7]=>  NULL [8]=>  NULL [9]=>  NULL [10]=>  NULL [11]=>  NULL [12]=>  NULL [13]=>  NULL } 
		//wrong order would be like this:
		//array(14) { [0]=>  string(4) "null" [1]=>  NULL [2]=>  NULL [3]=>  NULL [4]=>  NULL [5]=>  NULL [6]=>  NULL [7]=>  NULL [8]=>  NULL [9]=>  NULL [10]=>  NULL [11]=>  NULL [12]=>  NULL [13]=>  NULL } 
			break;
					
			//Lấy trạng thái đơn hàng
			case 'checkStatusOrder':				
				$result = $this->client->call("checkStatusOrder", $params);		
//				var_dump($result);
//				echo $this->error($fault,$result);
			break;				
			
			//Cập nhật trạng thái đơn hàng mới
			case 'updateNewStatus':			
				$result = $this->client2->call("updateNewStatusC", $params);		
//				var_dump($result);
//				echo $this->error($fault,$result);
				if($result["updateNewStatusCResult"] == -6)
					$message= "invalid change value";
				else if($result["updateNewStatusCResult"] == -5)
					$message= "not enough balance to change";
				else if ($result["updateNewStatusCResult"] == -4)
					$message= "invalid status";
				else if ($result["updateNewStatusCResult"] == -3)
					$message= "unknown error";
				else if ($result["updateNewStatusCResult"] == -2)
					$message= "no transaction found";
				else if ($result["updateNewStatusCResult"] == -1)
					$message= "invalid partner";
				else if ($result["updateNewStatusCResult"] == 0)
					$message= "success";					
			break;	
			
			//Lấy số đơn hàng trên hệ thống
			case 'getListBillingSize':				
				$result = $this->client->call("getListBillingSize", $params);		
//				
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
				if($result == 0)
					$message= "Bạn nhập sai tài khoản hoặc mật khẩu!";
				else 
					$message= "Số hóa đơn là: " .$result;		
			break;		
		}
	return $message;
	}
}
function CDongAPaymentOnline()
{
	return new CDongAPaymentOnline();
}
?>
